https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/sheffielddata.txt
# -----------IMPORT DATA------------
source <- 'https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/sheffielddata.txt'
# Read the contents of the file
file_content <- readLines(source)
## Warning in readLines(source): incomplete final line found on
## 'https://www.metoffice.gov.uk/pub/data/weather/uk/climate/stationdata/sheffielddata.txt'
# Replace all asterisks with an empty string
modified_content <- gsub("\\*", "", file_content)
modified_content <- gsub("\\#", "", modified_content)
modified_content <- gsub("Provisional", "", modified_content)
# Write the modified content back to the file
writeLines(modified_content, here("sanitised.txt"))
df <- read.table(here("sanitised.txt"), skip=7, fill=TRUE)
col_names <- c("year","month", "max_t", "min_t", "days", "rain", "sun")
colnames(df) <- col_names
# -----------TIDY DATA------------
cf <- df %>%
mutate(sun = parse_number(sun)) %>% # remove non-numeric data
mutate(year=as.numeric(year), # change data type to numeric
max_t=as.numeric(max_t),
min_t=as.numeric(min_t),
days=as.numeric(days),
rain=as.numeric(rain))
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `sun = parse_number(sun)`.
## Caused by warning:
## ! 553 parsing failures.
## row col expected actual
## 1 -- a number ---
## 2 -- a number ---
## 3 -- a number ---
## 4 -- a number ---
## 5 -- a number ---
## ... ... ........ ......
## See problems(...) for more details.
## Warning: There were 3 warnings in `mutate()`.
## The first warning was:
## ℹ In argument: `max_t = as.numeric(max_t)`.
## Caused by warning:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 2 remaining warnings.
write.csv(cf, here("data", "tidy_data.csv"))
PLOTS
# ----------MAKE SOME PLOTS------------
p <- ggplot(cf, mapping=aes(x=month, y=max_t, group=year,
col=year))
p + geom_line(alpha=.1) +
scale_color_gradient(low='blue', high='red')
## Warning: Removed 24 rows containing missing values (`geom_line()`).
july <- cf %>%
filter(month == 7)
p2 <- ggplot(july, mapping=aes(x=year, y=max_t,
col=max_t))
p2 + geom_point()
## Warning: Removed 3 rows containing missing values (`geom_point()`).
average <- cf %>%
group_by(year) %>%
summarise(avg_upper = mean(max_t),
avg_lower = mean(min_t))
ANIMATED
# -------LET'S ANIMATE-----
p3 <- ggplot(average, mapping=aes(x=year, y=avg_upper,
frame=year))
#p3 + geom_point()
anim <- p3 + geom_point() +
transition_manual(year, cumulative = TRUE) +
ggtitle('The year is: {frame + 1882}')
anim_save(here("plots", "average_by_year.gif"), anim, renderer = gifski_renderer())
## Warning: Removed 2 rows containing missing values (`geom_point()`).
## Removed 2 rows containing missing values (`geom_point()`).
## Removed 2 rows containing missing values (`geom_point()`).
## Warning: Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
## Removed 3 rows containing missing values (`geom_point()`).
ROLL OVER
# -------LET'S ROLL OVER------
p4 <- ggplot(cf, mapping=aes(x=month, y=max_t,
group=year, col=year)) +
geom_line()
p4
## Warning: Removed 24 rows containing missing values (`geom_line()`).
ggplotly(p4)
saveWidget(ggplotly(p4), file='interactive.html')